package com.oa.mapper;

import com.oa.pojo.Dept;
import com.oa.pojo.Option;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DeptMapper {
    // 获取所有部门信息
    List<Dept> getAll();

    // 根据ID获取一个部门信息
    Dept getOneById(@Param("deptId") String deptId);

    Dept getOneByDeptName(@Param("deptName") String deptName);

    // 新增部门
    int addDept(Dept dept);

    // 修改部门
    int updateDept(Dept dept);

    // 删除部门
    int delDept(@Param("deptId") String deptId);

    // 根据部门ID获取部门领导ID
    String getDeptLeaderID(@Param("deptId") String deptId);

    // 根据部门ID获取pids
    String getPids(@Param("deptId") String deptId);

    // 根据部门id获取部门名称
    String getDeptName(@Param("deptId") String deptId);

    /* 1.1、queryDeptOptions
     * 功能: 查询部门 Op 清单(Option)
     * text:deptName,val:deptName
     */
    List<Option> queryDeptOptions();

    /**
     * 更新hasSub
     * 先查找所有的部门的parentId是否为当前部门的ID
     * 是，则将HasSub设为1
     */
    int updateHasSub(@Param("parentId") String parentId, @Param("hasSub") String hasSub);

    // 获取数据条数
    int getCount();

    // 获取最后的那条数据的deptId
    // count：总数
    String getEndDeptId(Integer count);

    // 获取上级部门ID
    String getHighDeptId(String deptId);

    // 查询一个部门有多少子部门
    int getDeptHasSubNum(@Param("parentId") String parentId);
}
